﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using AG.Comunes.Base;
using System.Data;
using AG.Servicios.ServiciosAdministracionDominio;
using System.Configuration;

namespace AG.Modulos.AdministracionDominio
{
    public class ControladorAdministracionDominio : ControladorBase
    {
        private IServicioAdministracionDominio _servicios;

        public ControladorAdministracionDominio()
        {
            _servicios = new ServicioAdministracionDominio();
        }


        /// <summary>
        /// Metodo que consulta todos los valores de dominios
        /// </summary>
        /// <returns>lista de dominios</returns>
        public DataSet ConsultarTodosValoresDeDominio()
        {

            DataSet listaRetorno = _servicios.ConsultarTodosValoresDeDominio();

            return listaRetorno;
        }

        /// <summary>
        /// Metodo que se encarga de filtrar los datos repetidos de un dataSet
        /// </summary>
        /// <param name="DataSetOriginal"> Contiene todos los datos del dataset a filtrar</param>
        /// <returns>Dataset Filtrado</returns>
        public DataSet FiltrarRepetidos(DataSet DataSetOriginal)
        {
            DataSet dataSetFiltrado = DataSetOriginal.Clone();
            DataRow fila = dataSetFiltrado.Tables[0].NewRow();
            fila[ConfigurationManager.AppSettings[@"DDLTipoDeDominioText"]] = ConfigurationManager.AppSettings[@"EtiquetaSeleccionar"];
            dataSetFiltrado.Tables[0].Rows.Add(fila);
            string tipoDominio = "";
            try
            {
                foreach (DataRow row in DataSetOriginal.Tables[0].Rows)
                {
                    if(tipoDominio != row[ConfigurationManager.AppSettings[@"DDLTipoDeDominioText"]].ToString())
                    {
                       dataSetFiltrado.Tables[0].ImportRow(row);
                    }
                    tipoDominio = row[ConfigurationManager.AppSettings[@"DDLTipoDeDominioText"]].ToString();
                }

            }
            catch (Exception)
            {
                
                throw;
            }

            return dataSetFiltrado;
        }

        /// <summary>
        /// Metodo que llama al servicio para agregar un dominio
        /// </summary>
        /// <param name="dominio">tipo de dominio</param>
        /// <param name="descripcion">descripcion del dominio</param>
        /// <param name="valor">valor</param>
        /// <returns></returns>
        public bool AgregarDominio(string dominio,string descripcion,int valor)
        {
            bool retorno;
            retorno = _servicios.AgregarDominio(dominio,descripcion, valor);
            return retorno;
        }

        /// <summary>
        /// Metodo que llama al servicio para eliminar el dominio
        /// </summary>
        /// <param name="id">id de dominio a eliminar</param>
        /// <returns></returns>
        public bool EliminarDominio(int id)
        {
            bool retorno;
            retorno = _servicios.EliminarDominio(id);
            return retorno;
        }

    }
}
